]> git.neil.brown.name Git - wiggle.git/commitdiff
vpatch: allow mode setting keys to toggle back to 'merge'.
authorNeilBrown <neilb@suse.de>
Wed, 14 Nov 2012 23:59:04 +0000 (10:59 +1100)
committerNeilBrown <neilb@suse.de>
Wed, 14 Nov 2012 23:59:04 +0000 (10:59 +1100)
When I set the mode to anything other than 'merge', I usually want to
then go straight back to 'merge'.  And if someone does it by mistake,
a toggle function is easier to guess.

So make all mode setting commands toggle between their mode, and
'merge'.

Signed-off-by: NeilBrown <neilb@suse.de>
vpatch.c

index 99ec97e04e8ab205f6a9090b50d6ec4f04a34a13..fcace1530f4c39685ef05c18e147f06535f0cf15 100644 (file)
--- a/vpatch.c
+++ b/vpatch.c
@@ -1938,37 +1938,50 @@ static int merge_window(struct plist *p, FILE *f, int reverse)
                        break;
 
                case 'a': /* 'after' view in patch window */
+                       if (mode == AFTER)
+                               goto set_merge;
                        mode = AFTER; modename = "after"; modehelp = after_help;
                        mmode = mode; curs.alt = 0;
                        refresh = 3;
                        break;
                case 'b': /* 'before' view in patch window */
+                       if (mode == BEFORE)
+                               goto set_merge;
                        mode = BEFORE; modename = "before"; modehelp = before_help;
                        mmode = mode; curs.alt = 0;
                        refresh = 3;
                        break;
                case 'o': /* 'original' view in the merge window */
+                       if (mode == ORIG)
+                               goto set_merge;
                        mode = ORIG; modename = "original"; modehelp = orig_help;
                        mmode = mode; curs.alt = 0;
                        refresh = 3;
                        break;
                case 'r': /* the 'result' view in the merge window */
+                       if (mode == RESULT)
+                               goto set_merge;
                        mode = RESULT; modename = "result"; modehelp = result_help;
                        mmode = mode; curs.alt = 0;
                        refresh = 3;
                        break;
                case 'd':
+                       if (mode == (BEFORE|AFTER))
+                               goto set_merge;
                        mode = BEFORE|AFTER; modename = "diff"; modehelp = diff_help;
                        mmode = mode; curs.alt = 0;
                        refresh = 3;
                        break;
                case 'm':
+               set_merge:
                        mode = ORIG|RESULT; modename = "merge"; modehelp = merge_help;
                        mmode = mode; curs.alt = 0;
                        refresh = 3;
                        break;
 
                case '|':
+                       if (mode == (ORIG|RESULT|BEFORE|AFTER))
+                               goto set_merge;
                        mode = ORIG|RESULT|BEFORE|AFTER; modename = "sidebyside"; modehelp = sidebyside_help;
                        mmode = mode; curs.alt = 0;
                        refresh = 3;